package com.bot.nft.module.op.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bot.nft.core.enums.op.OpRofoEnum;
import com.bot.nft.module.op.domain.OpRofoList;
import com.bot.nft.module.op.domain.bo.OpRofoListBo;
import com.bot.nft.module.op.domain.vo.OpRofoListVo;
import com.bot.nft.module.op.mapper.OpRofoListMapper;
import com.bot.nft.module.op.service.IRofolistService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;

/**
 * 描述:
 * 时间: 2023-11-27 19:31
 * 负责人: 王速
 **/
@Service
public class RofoListServiceImpl implements IRofolistService {
    @Resource
    private OpRofoListMapper opRofoListMapper;

    private static final Log log = LogFactory.get();


    /**
     * 查询优先购白名单
     *
     * @param rofoId 优先购活动标识
     * @return 优先购白名单 包含：会员名称,会员状态等属性
     */
    @Override
    public Page<OpRofoListVo> getRofoList(String rofoId, String name, Integer pageNo, Integer pageSize) {
        Page<OpRofoListVo> page = new Page<>(pageNo, pageSize);
        log.info("开始查询优先购活动白名单信息：{}", rofoId);
        Page<OpRofoListVo> opRofoListVoPage = opRofoListMapper.getRofoList(page,rofoId, name);
        log.info("完成查询优先购活动白名单信息：{}", rofoId);
        return opRofoListVoPage;
    }

    /**
     * 添加优先购白名单
     *
     * @param rofoListInfoBo 优先购白名单信息 包含：会员标识,会员名称等属性
     * @return Boolean 成功/true，失败/false
     */
    @Override
    public Boolean addRofoList(OpRofoListBo rofoListInfoBo) {
        log.info("开始添加优先购活动白名单信息：{}", rofoListInfoBo.getId());
        rofoListInfoBo.setId(IdUtil.getSnowflakeNextIdStr());
        rofoListInfoBo.setStatus(OpRofoEnum.STATUS.getCode());
        rofoListInfoBo.setCreationTime(new Date());
        OpRofoList opRofoList = BeanUtil.toBean(rofoListInfoBo, OpRofoList.class);
        int falg = opRofoListMapper.insert(opRofoList);
        log.info("完成添加优先购活动白名单信息：{}", rofoListInfoBo.getId());
        return falg > 0;
    }

    /**
     * 删除优先购白名单
     *
     * @param mbId 会员标识
     * @return Boolean 成功/true，失败/false
     */
    @Override
    public Boolean delRofoList(String mbId) {
        log.info("开始删除优先购活动白名单信息：{}", mbId);
        QueryWrapper<OpRofoList> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(OpRofoList::getMbId,mbId);
        Integer falg = opRofoListMapper.delete(queryWrapper);
        log.info("完成删除优先购活动白名单信息：{}", mbId);
        return falg > 0;
    }
}
